iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
AI & Data

機器學習的 hello world - 用手寫數字辨識系統學習 ML 的 30 天系列 第 26

[DAY26] Kaggle 手寫數字辨識比賽的實作結果討論-附程式碼

  • 分享至 

  • xImage
  •  

今天讓我們聊聊在 Kaggle 實作手寫數字辨識比賽的結果吧!

這一篇的程式碼可參考 → DAY26-MNIST-CNN.ipynb


實作思考架構

[DAY16] 使用 Keras 實作手寫數字辨識系統-含程式碼 思考架構差異不大,這邊僅提與 DAY16 程式碼差異之處。

  • import data:看看資料形式
  • preprocessing
    • 因為這邊的 NN model 是用 CNN model,所以reshape資料時改成適合輸入進卷積層的形式
    • 資料給了訓練輸入圖、訓練輸出標籤和測試輸入圖,由於目的為了預測測試輸入圖結果,所以在資料前處理時,可以使用sklearn套件中的 train_test_split() 來切割資料的訓練集跟驗證集,這樣模擬預測測試集的結果會與現實情況比較相近。(不過這邊的參考程式碼偷個懶沒有這樣處理,還是在訓練時讓它自己切)
    • 沒有對訓練輸出標籤做前處理,是因為看到它的形式後,發現可以直接將 model 的 loss function 改成sparse_categorical_crossentropy,就能 fit 資料訓練格式。
  • build NN model
    • 用了簡單的 CNN model 架構
  • prediction
    • 輸入測試圖預測後,存成 Kaggle 需要的 csv 檔

上傳結果 csv 檔後

[DAY25] Kaggle 的參賽版面介紹-以手寫數字辨識比賽為例 介紹了參賽版面,當我們 submit predictions 的地方上傳我們存下來 csv檔結果後,可以看到自己的預測結果-正確率與排名等。

ps. 手寫數字辨識系統的排行榜(Leaderboard)會更新,以提交時間為準,提交後超過兩個月排名就下架,這是為了讓排行榜大小可控等原因。

https://ithelp.ithome.com.tw/upload/images/20221010/20131719uiDzsVRaCD.png


其他:Kaggle 的 public / private testing set

這邊想額外提的是,當我們看比賽這區時,正在進行中的比賽通常可以看到 public 跟 private 兩個版面。

https://ithelp.ithome.com.tw/upload/images/20221010/20131719M6XogpDDEF.png

兩個都是 testing set 的排名,比賽期間看到的排名是全部人用 public testing set 的結果,但到比賽是用比賽完才會公布的 private testing set 的結果做判斷,所以 public 在前幾名的,在 private 則不一定也在前面。

https://ithelp.ithome.com.tw/upload/images/20221010/20131719ZdknwIdvTR.png

圖片來源:李宏毅老師機器學習課程

我們可以看一下這上圖,實際操作並不推薦看到 public testing set 的結果後再回去修改model,因為會把 public 的偏差結果也學起來。把 public testing set 當參考就好~


小結

這三天的 Kaggle 介紹就先簡單在這邊總結了,了解平台各功能、參賽版面位置後,相信大家都能很快上手,並開始建立累積自己的機器學習實作經驗!明天就讓我們講一下另一個好用的線上服務吧!


上一篇
[DAY25] Kaggle 的參賽版面介紹-以手寫數字辨識比賽為例
下一篇
[DAY27] 線上程式編輯環境-Google Colab 介紹
系列文
機器學習的 hello world - 用手寫數字辨識系統學習 ML 的 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言